﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Contabilidade;

namespace Contab
{
	public partial class AutoridadeForm : Form
	{
		public AutoridadeForm()
		{
			InitializeComponent();
			NomeTextBox.Focus();
		}

		private void AutoridadeForm_Load(object sender, EventArgs e)
		{
			LoadGrid();
		}

		private void LoadGrid()
		{
			AutoridadeController autoridadeController = new AutoridadeController();
			AutoridadeDataGridView.DataSource = autoridadeController.FetchAll();
			AutoridadeDataGridView.ClearSelection();
			NomeTextBox.Focus();
		}

		private void SaveButton_Click(object sender, EventArgs e)
		{
			Contab.Business.Library.Autoridade autoridade = new Contab.Business.Library.Autoridade();
			long idAutoridade;

			if(long.TryParse(IDAutoridadeTextBox.Text, out idAutoridade))
				autoridade.IDAutoridade = idAutoridade;

			autoridade.Nome = NomeTextBox.Text;
			autoridade.Save();

			if(autoridade.BrokenRulesCollection.Count > 0)
				MessageBox.Show(autoridade.BrokenRulesCollection.ToString());

			Limpar();
			LoadGrid();
		}

		private void AutoridadeDataGridView_CellClick(object sender, DataGridViewCellEventArgs e)
		{
			Autoridade autoridade = (Autoridade)((DataGridView)sender).SelectedRows[0].DataBoundItem;
			IDAutoridadeTextBox.Text = autoridade.IDTaxa.ToString();
			NomeTextBox.Text = autoridade.Nome;
			ExcluirButton.Enabled = true;
		}

		private void ExcluirButton_Click(object sender, EventArgs e)
		{
			Autoridade.Delete(IDAutoridadeTextBox.Text);
			ExcluirButton.Enabled = false;
			LoadGrid();
		}

		private void CancelarButton_Click(object sender, EventArgs e)
		{
			Limpar();
			ExcluirButton.Enabled = false;
		}

		private void Limpar()
		{
			IDAutoridadeTextBox.Text = String.Empty;
			NomeTextBox.Text = String.Empty;
		}

		delegate int Del(int x);
		private void AdicionarButton_Click(object sender, EventArgs e)
		{
			Del AoQuadrado = x => x * x;
			AoQuadrado(4);

			Contab.Business.Library.Autoridade autoridade = new Contab.Business.Library.Autoridade();
			long idAutoridade;

			if (long.TryParse(IDAutoridadeTextBox.Text, out idAutoridade))
			    autoridade.IDAutoridade = idAutoridade;

			autoridade.Nome = NomeTextBox.Text;
			autoridade.Add();

			if (autoridade.BrokenRulesCollection.Count > 0)
				MessageBox.Show(autoridade.BrokenRulesCollection.ToString());

			Limpar();
			LoadGrid();
		}
	}
}
